$(function(){
   
   
  
    
    $("#cadastra_usuario").click(function(){
        dialog_cad_user();
    });
    
   
    $("#editar_cadastro").click(function(){
        editar_usuario();
    });
    
    $("#administrar_usuario").click(function(){        
        grid_user();
        $("#grid_dialog_user").dialog({
            title : "Lista de usuários",
            width : 840,
            height : 450,
            modal : true,
            open : function(){
                $('.ui-dialog-buttonpane').find('button:contains("Excluir")').button({
                    icons: {
                        primary: 'ui-icon-trash'
                    }
                });
                
                $('.ui-dialog-buttonpane').find('button:contains("Novo")').button({
                    icons: {
                        primary: 'ui-icon-plusthick'
                    }
                });
                                
                $('.ui-dialog-buttonpane').find('button:contains("Editar")').button({
                    icons: {
                        primary: 'ui-icon-wrench'
                    }
                });
                                
                $('.ui-dialog-buttonpane').find('button:contains("Cancelar")').button({
                    icons: {
                        primary:  'ui-icon-circle-close'
                    }
                });
            },
            close : function(){
                close();
            },
            buttons : {
                "Novo" : function(){
                    dialog_cad_user()
                },
                "Editar" : function(){
                    var id = $("#grid_user").jqGrid('getGridParam','selrow');                                    
                    if( id != null ) {
                        var rowData = $("#grid_user").getRowData(id);  
                        dialog_edit_user(function(){ 
                            $("#id_usuario").val(rowData["id"]);
                            $("#nome_usuario").val($.trim(rowData["name"]));
                            $("#cpf_usuario").val(rowData["cpf"]);
                            $("#email_usuario").val($.trim(rowData["email"]));
                            $("#telefone_usuario").val(rowData["phone"]);     
                            if(rowData["permission"] == 'true') {
                                $("#permissao").attr("checked", true);
                            } else {
                                $("#permissao").attr("checked", false);
                            }
                        });
                    } else {
                        alert("Selecione um registro!");
                    }
                },
                "Cancelar" : function(){
                    close();
                }
            }
        });
    });
    
});



function grid_user() {
    $('body').append("<div id='grid_dialog_user'></div>");
    $('#grid_dialog_user').append("<table id='grid_user'></table>");
    $('#grid_dialog_user').append("<table id='pager_user'></table>");
        
    jQuery("#grid_user").jqGrid({
        width : 800,
        height : 285,
        url:'list/user',
        datatype: "json",
        colNames:['Id', 'Nome','E-mail', 'CPF', 'Cadastro', "Telefone", "permission"],
        colModel:[{
            name: 'id', 
            index: 'id', 
            align : "center", 
            width: "25px"
        },{
            name:'name',
            index:'name'
        },{
            name:'email',
            index:'email'
        },{
            name:'cpf',
            index:'cpf', 
            align: "center", 
            width: "60px;", 
            sortable : false
        },{
            name:'sign',
            index:'sign', 
            align: "center", 
            width: "60px", 
            formatter: "date", 
            sortable: true
        },{
            name : "phone",
            index: "phone",                
            hidden : true
        },{
            name : "permission",
            index: "permission",                
            hidden : true
        }],
        rowNum:20,
        jsonReader : {
            repeatitems: true,
            cell: '', 
            root : "data"
        },
        mtype: "POST",
        pager: '#pager_user',
        sortname: 'name',
        shrinkToFit: true,
        viewrecords: true,
        sortorder: "asc",
        rownumbers: true
    });

               
    jQuery("#grid_user").navGrid('#pager_user',{
        edit:false,
        add:false,
        del:false, 
        search:false
    }).navButtonAdd('#pager_user',{
        caption:"Pesquisar",
        buttonicon:"ui-icon-search",
        onClickButton: function(){ 
            $('body').append("<div id = 'dialog-search-grid'></grid>");
            $("#dialog-search-grid").dialog({
                modal : true,
                title : "Procurar...",
                width : 400,
                open : function() {
                    $("#dialog-search-grid").append("<select id='select-search'></select>");
                    $("#select-search").append("<option value='name'>Nome</option>");
                    $("#select-search").append("<option value='email'>Email</option>");
                    $("#select-search").append("<option value='cpf'>Cpf</option>");                        
                    $("#dialog-search-grid").append("<input type='text' id='search-text' />");

                    $('.ui-dialog-buttonpane').find('button:contains("Procurar")').button({
                        icons: {
                            primary: 'ui-icon-search'
                        }
                    });

                    $('.ui-dialog-buttonpane').find('button:contains("Cancelar")').button({
                        icons: {
                            primary: 'ui-icon-circle-close'
                        }
                    });
                },
                buttons :{
                    "Procurar" : function() {
                        $("#grid_user").setGridParam({
                            'postData':{
                                field : $("#select-search").val(),
                                search : $("#search-text").val()
                            }
                        }).trigger("reloadGrid");
                    },
                    "Cancelar" : function() {
                        $("#dialog-search-grid").dialog('close');
                        $("#dialog-search-grid").remove();
                    }
                },
                close : function() {
                    $("#dialog-search-grid").remove();                                    
                }
            })
        },
        position:"first"
    });
}
function dialog_cad_user() {
    $("#div_temp").load("jform/forms.jsp #form_cadastro_usuario", function(){
        $("#form_cadastro_usuario").dialog({
            title : "Novo cadastro",
            width: 490,
            modal: true,
            resizable: false,
            open : function (){
                $('.ui-dialog-buttonpane').find('button:contains("Salvar")').button({
                    icons: {
                        primary: 'ui-icon-circle-check'
                    }
                });

                $('.ui-dialog-buttonpane').find('button:contains("Cancelar")').button({
                    icons: {
                        primary:  'ui-icon-circle-close'
                    }
                });
            },
            close : function(){
                $("#form_cadastro_usuario").remove();
                $("#div_temp").empty();
                $(this).dialog('destroy');
            },
            buttons: {
                "Salvar" : function(){
                    $("#cadastro_usuario").submit();
                },
                "Cancelar" :  function() {
                    $("#form_cadastro_usuario").remove();
                    $("#div_temp").empty();
                    $(this).dialog('destroy');
                }
            }
        });
            
        load_function_user();
            
    });
}
    
     
/**
     * Formulario de edição de cadastor de usuario.
     */
function dialog_edit_user(callback) {
    $("#div_temp").load("jform/forms.jsp #form_editar_usuario", function(){         
           
        $("#form_editar_usuario").dialog({
            title : "Editar cadastro",
            width: 490,
            modal: true,
            resizable: false,
            open : function (){
                $('.ui-dialog-buttonpane').find('button:contains("Salvar")').button({
                    icons: {
                        primary: 'ui-icon-circle-check'
                    }
                });

                $('.ui-dialog-buttonpane').find('button:contains("Cancelar")').button({
                    icons: {
                        primary:  'ui-icon-circle-close'
                    }
                });
                    
                $('.ui-dialog-buttonpane').find('button:contains("Excluir")').button({
                    icons: {
                        primary:  'ui-icon-trash'
                    }
                });
            },
            close:function(){
                $(this).dialog('destroy');
                $("#form_editar_usuario").remove();
                $("#div_temp").empty();
            },
            buttons: {
                "Salvar" : function(){
                    $("#cadastro_usuario").submit();
                },
                "Excluir" : function() {
                    excluir_cadastro($("#id_usuario").val());
                },
                "Cancelar" :  function() {
                    $(this).dialog('destroy');
                    $("#form_editar_usuario").remove();
                    $("#div_temp").empty();
                }
            }
        });
            
        if(callback) {
            callback();
        }
            
        load_function_user();
    });
        
        
}

function editar_usuario() {
    dialog_edit_user(function () {    
        $.ajax({
            type: "POST",
            url: "user/get",
            dataType: "json",
            success: function(response){
                if(response.success === true){
                    $("#id_usuario").val(response.user.id);
                    $("#nome_usuario").val($.trim(response.user.name));
                    $("#cpf_usuario").val(response.user.cpf);
                    $("#email_usuario").val($.trim(response.user.email));
                    $("#telefone_usuario").val(response.user.phone);       
                    $("#permissao").attr("checked", response.user.permission);
                }
            }
        });
    });
}


function load_function_user(){
    $("#cadastro_usuario").validate({
        submitHandler : function(){
            cadastro_usuario();
        }
    });
            
    $.each(validations, function(index, data){
        $.validator.addMethod(
            data.name,
            data.func,
            data.message);
    });
            
    $("#cpf_usuario").mask('999.999.999-99');
            
    $("#telefone_usuario").mask('(99) 9999-9999');
}
    
    
function cadastro_usuario() {
    $.post('user/sign', {
        'user.id'         : $("#id_usuario").val(),
        'user.name'       : $("#nome_usuario").val(),
        'user.cpf'        : $("#cpf_usuario").val(),
        'user.email'      : $("#email_usuario").val(),
        'user.password'   : $("#npassw").val(),
        'user.phone'      : $("#telefone_usuario").val(),
        'user.permission' : $("#permissao").is(":checked")
    }, function(data){
        try {                                
            if(data.success === true) {
                if($("#id_usuario").val() == "") {
                    alert(data.message);                        
                } else {
                    alert("Alteração realizada com sucesso!");
                }
                $("#form_cadastro_usuario").remove();
                $("#div_temp").empty();
                $("#grid_user").trigger("reloadGrid");
            } else {
                alert(data.message);
            }
        } catch(e) {
            alert("Atenção!, ocorreu um erro em sua solicitação, tente novamente mais tarde.\n Detalhes: " + e.getMessage());
        }                                
    });
}
    
    
    
function excluir_cadastro(id) {
    if(confirm("Deseja realmente desativar essa conta?")) {
        $.post("user/delete", {
            'id' : id
        }, function(response){
            if(response.success === true) {
                alert(response.message);                   
                    
                if(response.log === true) {
                    location.href = "index.jsp";
                } else {
                    $("#grid_user").trigger("reloadGrid");
                }
            } else {
                alert(response.message);
                $("#grid_user").trigger("reloadGrid");
            }
        });
    }
}
    
      
   
    
function close(){
    $('#grid_dialog_user').dialog('destroy');
    $('#grid_dialog_user').remove();
    $('#grid_user').jqGrid('GridUnload');
    $('#pager_user').remove();
}
    
    
    
var validations = [{
    name : "cpf",
    func: function(){
        return true;//$("#cpf_usuario").validateCPF();
    },
    message : "CPF digitado é inválido!"
}, {
    name : "senha",
    func : function(input) {
        var pattern = /^([0-9a-zA-Z])+$/;
        return pattern.test(input);
    },
    message : "Campo senha deve conter apenas caracteres a-z e 0-9."
}, {
    name : "confirmar",
    func : function(cpassw) {
        if($("#npassw").val() != cpassw) {
            return false;
        }
        return true;
    },
    message : "Senhas digitadas não conferem!"
}, {
    name : "disponivel_email",
    func : function(email) {
        var val = $.ajax({
            url : "user/email?email=" + email + "&id="+ $("#id_usuario").val(),
            async : false
        }).responseText;
        if (val == 'true') {
            return true;
        }
        return false;
    },
    message : "Email informado já está em uso no sistema!"        
}, {
    name : "disponivel_cpf",
    func : function(cpf) {
        var val = $.ajax({
            url : "user/cpf?cpf=" + cpf + "&id="+ $("#id_usuario").val(),
            async : false
        }).responseText;
        if (val == 'true') {
            return true;
        }
        return false;
    },
    message : "CPF informado já está em uso no sistema!"        
}];
